Autosize the columns after the model is set. (shortcuts_append_path): Add
authorFederico Mena Quintero <federico@ximian.com>
Thu, 9 Oct 2003 01:12:24 +0000 (01:12 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Thu, 9 Oct 2003 01:12:24 +0000 (01:12 +0000)
2003-10-08  Federico Mena Quintero  <federico@ximian.com>

* gtkfilechooserimpldefault.c (tree_selection_changed): Autosize
the columns after the model is set.
(shortcuts_append_path): Add optional indentation to items.
(shortcuts_append_bookmarks): Indent bookmark items.
(create_shortcuts_tree): Set the "xpad" attribute of the name
renderer to be fetched from the indent column.
(shortcuts_append_bookmarks): Use NULL for the name of the
bookmarks node, so that a separator gets drawn.
(create_shortcuts_tree): Create a GtkCellRendererSepText.

* gtkcellrendererseptext.[ch]: New files with a cell renderer that
can display text or a separator line.

* Makefile.am (libgtkfilechooser_la_SOURCES): Added
gtkcellrendererseptext.[ch].

gtk/gtkfilechooserdefault.c

index 322039cd875c51711a45424d8b5c631333761658..4addc0f1ac7e0225b509651934cbed6368f8de9d 100644 (file)
@@ -18,6 +18,7 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include "gtkcellrendererseptext.h"
 #include "gtkfilechooserimpldefault.h"
 #include "gtkfilechooserentry.h"
 #include "gtkfilechooserenums.h"
@@ -106,7 +107,7 @@ struct _GtkFileChooserImplDefault
   guint bookmarks_set : 1;
 };
 
-/* Column numbers for the shortcuts tree */
+/* Column numbers for the shortcuts tree.  Keep these in sync with create_shortcuts_model() */
 enum {
   SHORTCUTS_COL_PIXBUF,
   SHORTCUTS_COL_NAME,
@@ -525,8 +526,8 @@ shortcuts_append_bookmarks (GtkFileChooserImplDefault *impl)
 
   gtk_tree_store_append (impl->shortcuts_model, &impl->bookmarks_iter, NULL);
   gtk_tree_store_set (impl->shortcuts_model, &impl->bookmarks_iter,
-                     SHORTCUTS_COL_PIXBUF, NULL, /* FIXME: use a nice icon */
-                     SHORTCUTS_COL_NAME, "Bookmarks",
+                     SHORTCUTS_COL_PIXBUF, NULL,
+                     SHORTCUTS_COL_NAME, NULL,
                      SHORTCUTS_COL_PATH, NULL,
                      -1);
   impl->bookmarks_set = TRUE;
@@ -538,7 +539,7 @@ shortcuts_append_bookmarks (GtkFileChooserImplDefault *impl)
       GtkFilePath *path;
 
       path = l->data;
-      shortcuts_append_path (impl, &impl->bookmarks_iter, path, FALSE, NULL);
+      shortcuts_append_path (impl, NULL, path, FALSE, NULL);
     }
 
   gtk_tree_view_expand_all (GTK_TREE_VIEW (impl->shortcuts_tree));
@@ -553,6 +554,7 @@ create_shortcuts_model (GtkFileChooserImplDefault *impl)
   if (impl->shortcuts_model)
     g_object_unref (impl->shortcuts_model);
 
+  /* Keep this order in sync with the SHORCUTS_COL_* enum values */
   impl->shortcuts_model = gtk_tree_store_new (SHORTCUTS_COL_NUM_COLUMNS,
                                              GDK_TYPE_PIXBUF,  /* pixbuf */
                                              G_TYPE_STRING,    /* name */
@@ -717,13 +719,13 @@ create_shortcuts_tree (GtkFileChooserImplDefault *impl)
   renderer = gtk_cell_renderer_pixbuf_new ();
   gtk_tree_view_column_pack_start (column, renderer, FALSE);
   gtk_tree_view_column_set_attributes (column, renderer,
-                                      "pixbuf", 0,
+                                      "pixbuf", SHORTCUTS_COL_PIXBUF,
                                       NULL);
 
-  renderer = gtk_cell_renderer_text_new ();
+  renderer = _gtk_cell_renderer_sep_text_new ();
   gtk_tree_view_column_pack_start (column, renderer, TRUE);
   gtk_tree_view_column_set_attributes (column, renderer,
-                                      "text", 1,
+                                      "text", SHORTCUTS_COL_NAME,
                                       NULL);
 
   gtk_tree_view_append_column (GTK_TREE_VIEW (impl->shortcuts_tree), column);
@@ -1809,6 +1811,7 @@ tree_selection_changed (GtkTreeSelection          *selection,
 
   gtk_tree_view_set_model (GTK_TREE_VIEW (impl->list),
                           GTK_TREE_MODEL (impl->sort_model));
+  gtk_tree_view_columns_autosize (GTK_TREE_VIEW (impl->list));
   gtk_tree_view_set_search_column (GTK_TREE_VIEW (impl->list),
                                   GTK_FILE_SYSTEM_MODEL_DISPLAY_NAME);
 
@@ -1843,7 +1846,12 @@ shortcuts_selection_changed (GtkTreeSelection          *selection,
   gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter, SHORTCUTS_COL_PATH, &path, -1);
 
   if (!path)
-    return; /* The "Bookmarks" node does not have a path set --- we can't change to it */
+    {
+      /* We are on the bookmarks separator node, so unselect it */
+      gtk_tree_selection_unselect_iter (selection, &iter);
+      /* FIXME: how to make this row unselectable? */
+      return;
+    }
 
   impl->changing_folder = TRUE;
   _gtk_file_chooser_set_current_folder_path (GTK_FILE_CHOOSER (impl), path);